/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tvdigital.DAO;

import br.com.tvdigital.model.Pessoas;
import br.com.tvdigital.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author User
 */
public class PessoasDAOImpl {

    private Connection conn;

    public PessoasDAOImpl() throws Exception {
        try {
            this.conn = ConnectionFactory.getConnection();
            System.out.println("Conectado com sucesso!");
        } catch (Exception ex) {
            throw new Exception(ex.getMessage());
        }
    }

    public Integer cadastrarPessoa(Pessoas pessoa) {

        PreparedStatement stmt = null;
        ResultSet rs = null;
        Integer idPessoa = null;
        String sql = "INSERT INTO pessoas"
                + "(nome_pessoa, email_pessoa, login_pessoa, senha_pessoa, tipo_pessoa)"
                + "VALUES (?, ?, ?, ?, ?) returning id_pessoa;";
        try {
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, pessoa.getNomePessoa());
            stmt.setString(2, pessoa.getEmailPessoa());
            stmt.setString(3, pessoa.getLoginPessoa());
            stmt.setString(4, pessoa.getSenhaPessoa());
            stmt.setString(5, pessoa.getTipoPessoa());
            rs = stmt.executeQuery();
            while (rs.next()) {
                idPessoa = rs.getInt("id_pessoa");
            }
        } catch (Exception ex) {
            System.out.println("Problemas na DAO ao cadastrar Pessoa! Erro: " + ex.getMessage());
            ex.printStackTrace();

        } finally {
            try {
                ConnectionFactory.closeConnection(conn, stmt, rs);
            } catch (Exception ex) {
                System.out.println("Problemas ao fechar parâmetros de conexão! Erro: " + ex.getMessage());
                ex.printStackTrace();
            }
        }
        return idPessoa;
    }

    public Boolean alterarPessoa(Object object) {

        Pessoas pessoa = (Pessoas) object;
        PreparedStatement stmt = null;
        String sql = "Update pessoas set nome_pessoa = ?, "
                + "login_pessoa = ?, senha_pessoa = ?, email_pessoa = ?"
                + "where id_pessoa = ?;";
        try {
            stmt = conn.prepareStatement(sql);
            stmt.setInt(5, pessoa.getIdPessoa());
            stmt.setString(1, pessoa.getNomePessoa());
            stmt.setString(2, pessoa.getLoginPessoa());
            stmt.setString(3, pessoa.getSenhaPessoa());
            stmt.setString(4, pessoa.getEmailPessoa());
            stmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            System.out.println("Problemas na DAO ao alterar Pessoa! Erro: " + ex.getMessage());
            ex.printStackTrace();
            return false;
        } finally {
            try {
                ConnectionFactory.closeConnection(conn, stmt);
            } catch (Exception ex) {
                System.out.println("Problemas ao fechar parâmetros de conexão! Erro: " + ex.getMessage());
                ex.printStackTrace();
            }
        }

    }
    
    public Pessoas verificarUsuario(String login, String senha){
        Pessoas pessoa = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        String sql = "select p.* from pessoas p where p.login_pessoa = ? and p.senha_pessoa = ?;";
        try{
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, login);
            stmt.setString(2, senha);
            rs = stmt.executeQuery();
            while(rs.next()){
                pessoa = new Pessoas() {};
                pessoa.setIdPessoa(rs.getInt("id_pessoa"));
                pessoa.setNomePessoa(rs.getString("nome_pessoa"));
                pessoa.setEmailPessoa(rs.getString("email_pessoa"));
                pessoa.setLoginPessoa(rs.getString("login_pessoa"));
                pessoa.setSenhaPessoa(rs.getString("senha_pessoa"));
                pessoa.setTipoPessoa(rs.getString("tipo_pessoa"));
              }
                }catch (Exception ex){
                    System.out.println("Problemas ao verificar Pessoa! Erro: " + ex.getMessage());
                    ex.printStackTrace();
                }finally{
            try{
                ConnectionFactory.closeConnection(conn, stmt, rs);
            }catch (Exception ex){
                System.out.println("Problemas ao fechar parametros de conexão! Erro: " + ex.getMessage());
                ex.printStackTrace();
            }
        }
        return pessoa;
        }
    }


